
#pragma once

#include <iostream>
#include <string>
#include <ctime>
#include <unistd.h>
#include <memory>
#include <unordered_map>
// session类保存用户发来的数据
class Session
{
    Session(const std::string usrname, const std::string status)
        : _usrname(usrname),
          _status(status)
    {
        _create_time = time(nullptr); // 获取当前时间UTC（1990.1.1）
    }

private:
    std::string _usrname;
    std::string _status; // 当前session对象的状态们是否需要删除
    uint64_t _create_time;
};

using session_ptr = std::shared_ptr<Session>;
// 每个sessionI对应一个seesion对象
class SessionManager
{
public:
    SessionManager()
    {
        srand(time(nullptr));
    }
    std::string Addsession(session_ptr s)
    {
        //随机生成一个sessionid
        uint32_t randomid=rand()+time(nullptr);//随机数 +时间戳
        std::string sessionid=std::to_string(randomid);
        _sessions.insert(std::make_pair(sessionid,s));
        return sessionid; 
    }
    //获取session对象
    session_ptr Getsession(std::string sessionid)
    {
        if(_sessions.find(sessionid)==_sessions.end())
        return nullptr;
        return _sessions[sessionid];
    }
private:
    std::unordered_map<std::string, session_ptr> _sessions;
};